草庐IT

带指针的 C++ vector

全部标签

c++ - 如何在运行时查看哪个函数分配给函数指针..?

这个问题在这里已经有了答案:Howtogetfunction'snamefromfunction'spointerinLinuxkernel?(13个答案)关闭9年前。#includeintadd(inti,intj){printf("\n%s\n",__FUNCTION__);return(i*j);}int(*fp)(int,int);voidmain(){intj=2;inti=5;printf("\n%s\n",__FUNCTION__);fp=add;printf("\n%d\n",(*fp)(2,5));printf("\n%s\n",*fp);}

将属于对象副本的指针推向向量的指针会发生什么?

我正在使用QT/C++。所以我有一个向量:QVectorrooms;//doeseverythinglikenormalvectorfromwhatI'veseen(Ihope)我的房间看起来像这样:classRoom{Textbox*t;//otherstuff}添加房间后,向量将通过引用传递的房间的副本,并将副本推入:voidFloor::AddRoom(Room&_room,QWidget*_window){rooms.push_back(_room);}我的问题是,属于的文本框指针会发生什么_room既然它是在复制之前指向的?如果我的新推动的房间会吗*t指向与_room那是通过引用通过

c++ - std::vector push_back 在并行 for 循环中使用时失败

我有一个代码如下(简化代码):for(inti=0;i此代码运行良好,但如果我想使用ompparallelfor使其并行,我会在output.push_back上收到错误,并且似乎在调整vector大小期间,内存已损坏。问题是什么,我该如何解决?如何确保在任何时候只有一个线程将新项目插入vector? 最佳答案 简单的答案是std::vector::push_back不是线程安全的。为了安全地并行执行此操作,您需要同步以确保不会同时从多个线程调用push_back。C++11中的同步可以通过使用std::mutex轻松实现。

c++ - asm.js-如何实现函数指针

注意:这个问题纯粹是关于asm.js的,而不是关于C++或任何其他编程语言的。标题已经说过:如何有效地实现函数指针?我在网上找不到任何东西,所以我想在这里问。编辑:我想在正在使用的编译器中实现虚函数。在C++中,我将执行以下操作来生成vtable:#includeclassBase{public:virtualvoiddoSomething()=0;};classDerived:publicBase{public:voiddoSomething(){std::coutdoSomething();return0;}更准确地说;如何在不需要纯JavaScript的情况下在asm.js中生成

c++ - 创建一个指向纯虚类的新指针

我有以下设计类:classMeal{public:virtualvoidcook()=0;//purevirtual}classOmelette:Meal{public:voidcook(){/*dosomething*/};//non-virtual}classWaffle:Meal{public:voidcook(){/*dosomething*/};//non-virtual}std::vector>menu;voidaddMeal(constMeal&meal){menu.emplace_back(newMeal(meal));//cannotallocateanobjecto

c++ - 在复制构造函数中复制唯一指针数组的内容

我的类包含一个指向数组的唯一指针。调用复制构造函数时,我希望该类创建自己的唯一指针数组,并只复制旧的唯一指针数组的内容。我不断收到关于从const值转换的错误,我不确定如何解决它。我的指针是这样声明的:std::unique_ptrmanagers;我打算只循环遍历数组并手动复制,所以我制作了这个复制构造函数:Restaurant::Restaurant(constRestaurant&_r){Manager*_managers=_r.managers;for(inti=0;i它在这一行给出了const转换错误:Manager*_managers=_r.managers;我只想深拷贝。

C++ 指针运行时错误

我用结构体和指针做了一个程序。但由于某种原因,它无法正常工作。主要问题是,for-loop不会按原样进行。如果你能解决这个问题会很有帮助#include#include#includeusingnamespacestd;structBook{stringname;intrelease;};intmain(){//localvariableinti;stringrelease_dte;intchoice;//interfacecout>choice;Book*Issue=newBook[choice];//forhandlerfor(i=0;i 最佳答案

c++ - 如何在 C++ 中正确地静态转换 vector ?

我有一段代码,在函数的末尾,我需要将数组的所有元素从int转换为double,以便能够在退出函数之前执行最终的push_back。我现在的代码是:templateclassA{typedeftypenamestd::arrayArrayInt;typedeftypenamestd::arrayArrayDouble;typedeftypenamestd::vectorVectorDouble;/*...*/foo(){/*...*/ArrayIntmyArrayInt;ArrayDoublemyArrayDouble;VectorDoublemyVectorDouble;/*Initi

python - c++将 vector 的内容作为参数传递给函数

在python中我们可以这样做:deftest(a,b,c):returna+b+cx=[1,2,3]y=test(*x)我们可以用C++做类似的事情吗? 最佳答案 目前提出的解决方案是基于对函数参数的运行时迭代,这会产生一些成本。他们还假设参数类型相同。如果参数的数量在编译时已知(通常是这样),那么一个不同的解决方案就像templateautotuple_call3(F&&f,constT&t)->decltype(std::forward(f)(std::get(t),std::get(t),std::get(t))){retu

c++ - 如何在运行时恢复函数指针的类型

在代码中,我在管理器类中注册了一个或多个函数指针。在这个类中,我有一个映射,将函数的参数类型映射到所述函数。它可能看起来像这样:std::map,void*>templatevoidRegister(Ret(*function)(Args...)){void*v=(void*)function;//recursivelybuildtypevectorandaddtothemap}在运行时,代码使用任意数量的参数获取调用(来自外部脚本)。这些参数可以作为原始数据类型或将在编译时指定的自定义类型读取。对于脚本的每次调用,我都必须找出要调用的函数,然后调用它。前者很容易并且已经解决了(在循环